package ma.model;

import java.util.List;

import ma.model.auxillary.Parameter;

public interface ResultModelInterface extends Observable {
	
	/**
	 * To get the main results of the model.
	 * @return the main results.
	 */
	public List<Parameter> getMainResults();
	
	/**
	 * To get results connected to a set.
	 * @param setIndex the set's index.
	 * @return the results.
	 * @throws IllegalArgumentException when index was not valid.
	 */
	public List<Parameter> getSetResults(int setIndex) 
			throws IllegalArgumentException;
	
	/**
	 * To get the number of parameter sets in the model.
	 * @return the number of parameter sets.
	 */
	public int getSetCount();
	
	/**
	 * To get the name of this model.
	 * @return the model's name.
	 */
	public String getName();
	
	/**
	 * To check whether this model was calculated or not.
	 * @return returns {@code true} when model was calculated.
	 */
	public boolean isCalculated();
	
	/**
	 * To get the name of a set. Returns {@code null} when set has no name.
	 * @param setIndex the set's index.
	 * @return the set's name.
	 * @throws IllegalArgumentException when index was not valid.
	 */
	public String getSetName(int setIndex) throws IllegalArgumentException;
}
